package com.itmentu.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author：http://www.itmentu.com
 * @date： 2021/12/6 20:07
 * @Description：
 ***/
//@Configuration
public class TopicExchangeConfig {

    /**
     * 创建交换机
     */
    @Bean
    public Exchange topicExchange(){
        return ExchangeBuilder
                //交换机名字
                .topicExchange("topic_exchange")
                //数据持久化
                .durable(true)
                //构建交换机
                .build();
    }

    /**
     * 声明队列
     */
    @Bean
    public Queue topicQueue(){
        return QueueBuilder
                //指定队列名字
                .durable("topic_queue")
                //构建队列
                .build();
    }

    /**
     * 队列绑定交换机
     */
    @Bean
    public Binding topicBinding(@Qualifier("topicQueue") Queue queue,
                                @Qualifier("topicExchange") Exchange exchange){
        return BindingBuilder
                //将队列queue
                .bind(queue)
                //绑定到exchange上
                .to(exchange)
                //路由规则是itmentu开始的key
                .with("itmentu.#")
                //路由没有别的参数
                .noargs();
    }
}
